window.Types = new function() {
	//Prefixes and tokens
	this.ARRAY_PREFIX       = "array_";
	this.NATIVE_PREFIX      = "javascript_";
	this.NULL_TOKEN         = "$0";
	this.EMPTY_STRING_TOKEN = "$1";
	
	//Array enc bytes;
	this.ARRAY_SPLITTER = ",";
	this.ARRAY_START    = "(";
	this.ARRAY_END      = ")";
	
	//Primitive types
	this.BYTE    = new Type("byte");
	this.CHAR    = new Type("char");
	
	this.INT     = new Type("int");
	this.LONG    = new Type("long");
	this.SHORT   = new Type("short");
	this.FLOAT   = new Type("float");
	this.DOUBLE	 = new Type("double");

	this.BOOLEAN = new Type("boolean");
	this.STRING	 = new Type("string");
	
	//Special types
	this.VOID    = new Type("void");
	
	//Dynamic types
	this.UNKNOWN = new Type("unknown");
	
	//Type functions
	this.toArray = function(t) {
		return new Type(this.ARRAY_PREFIX + t.asString());
	}
	
	this.toNative = function(o) {
		//maybe add more logic here to find the correct type
		
		return new Type(this.NATIVE_PREFIX + "object");
	}	
	
}